// 使用pthread_create创建线程，并使用pthread_exit()函数退出线程
// 如果不进行退出，则会使程序出现非预期的结果

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

// 子线程处理函数
void *threadDeal(void *arg){
	
	// 打印arg所指向的值, 因为arg为void *类型，因此需要转换为（int *）整形指针类型
	printf("%d\n", *(int *)arg);

	// 调用线程退出函数
	//pthread_exit(NULL);
}

int main(){

	pthread_t pthd;
	int i=0;
		
	// 在for循环中连续创建线程
	for(i=0;i<10;i++){
		if( pthread_create(&pthd, NULL, threadDeal, &i) != 0){
			printf("%s 错误出现在%d 行!\n", __FUNCTION__, __LINE__);
			exit(0);
		}else{
			
			// 打印线程号
			printf("线程号为:%ld\n", pthd);
			sleep(1);
		}
		//--- 每次运行结束后需要退出该线程，否则会出现错误,在最后退出就行，如果在这里退出线程，则会退出该for循环
		//pthread_exit(NULL);
	}

	// 打印线程号
	//printf("线程号为:%ld\n", pthd);
	//pthread_exit(NULL);
	return 0;
}
